import axios from 'axios';
import Toast from 'cube-ui/lib/toast';
import { $t } from 'src/i18n';

/** 承接loading_toast的空对象 */
let loading_toast = null;
/**
 * 请求发出前处理
 * @param {Object} config axios请求前的配置对象
 * @return {Object} axios请求前的配置对象
 */
function axiosRequestResolve(config) {
	if (!config.hideLoading) {
		loading_toast = Toast.$create({
			time: 0,
			txt: $t('common.wait'),
		});
		loading_toast.show();
	}
	return config;
}
/**
 * 对请求错误处理后件
 * @param  {Object} error axios请求报错后返回的error对象
 * @return {Promise.<*>} 返回promise.reject
 */
function axiosRequestReject(error) {
	return Promise.reject(error);
}

/**
 * 对响成功处理
 * @param {Object} response axios响应成功之后的返回体
 * @return {Object} axios响应成功之后的返回体
 */
function axiosResponseResolve(response) {
	if (loading_toast) {
		loading_toast.hide();
	}

	return response;
}

/**
 * 响应错误处理
 * @param {Object} error axios响应错误后的错误对象
 * @return {Promise.<*>}
 */
function axiosResponseReject(error) {
	return Promise.reject(error);
}

/** 请求拦截器 */
axios.interceptors.request.use(axiosRequestResolve, axiosRequestReject);

/** 响应拦截器 */
axios.interceptors.response.use(axiosResponseResolve, axiosResponseReject);

export default axios;
